#ifndef SCREENUTIL_H
#define SCREENUTIL_H

#include <QScreen>
#include <QWidget>

class ScreenUtil
{
public:
    static qreal ratio(QWidget *widget = nullptr);

    /**
     * @brief 移动到指定的屏幕位置
     * @param window
     * @param screen
     */
    static void moveScreenCenter(QWidget &window, QScreen *screen);
    static void moveScreenCenterMiddleUp(QWidget &window, QScreen *screen);
    static void moveScreenTopRight(QWidget &window, QScreen *screen);
    static void moveScreenTopCenter(QWidget &window, QScreen *screen);
    static void moveScreenTopLeft(QWidget &window, QScreen *screen);
    static void moveScreenBottomRight(QWidget &window, QScreen *screen);
    static void moveScreenBottomLeft(QWidget &window, QScreen *screen);

    /**
     * @brief  移动到屏幕中心
     * @note
     * 1. 如果只有一个屏幕，将会移动到主屏幕
     * 2. 如果有多个屏幕，将会移动到启动它的屏幕
     * @param  &window:
     * @retval None
     */
    static void moveCenter(QWidget &window);
    static void moveCenterMiddleUp(QWidget &window);
    static void movePrimaryScreenCenter(QWidget &window);

    /**
     * @brief  移动到鼠标所在的屏幕中心
     * @note   这是常规性的方式
     * 1. 如果不做任何窗口移动，窗口管理器可能会使窗口自动出现鼠标所在屏幕的任何位置
     * @param  &window:
     * @retval None
     */
    static void moveCenterForCursor(QWidget &window);
};

#endif // SCREENUTIL_H
